package com.slz.crm.server.service;

import com.slz.crm.common.enumeration.PermissionOperates;
import com.slz.crm.common.result.Result;
import com.slz.crm.pojo.entity.PermissionsEntity;
import com.slz.crm.pojo.vo.PermissionVO;

import java.util.List;

public interface PermissionService {
    /**
     * 检查用户是否有指定权限
     * @param userId
     * @param targetPerm
     * @return
     */
    boolean hasPermission(Long userId, Enum<? extends PermissionOperates.Operation> targetPerm);

    /**
     * 判断权限是否在权限链表中
     * @param targetPerm
     * @param permissionList
     * @return
     */
    boolean hasPermission(Enum<? extends PermissionOperates.Operation> targetPerm, List<PermissionsEntity> permissionList);

    /**
     * 获取权限链表
     * @param roleId
     * @return
     */
    List<PermissionsEntity> getPermissionList(Long roleId);

    /**
     * 条件查询权限链表
     * @param permissionsEntity 权限实体类
     * @return
     */
     List<PermissionVO> getPermissionList(PermissionsEntity permissionsEntity);

    /**
     * 获取角色权限链表
     * @return
     */
    List<PermissionVO> getMyPermission();

    /**
     * 获取所有权限的种类列表
     * @return 所有权限的种类列表
     */
    List<String> getKeyList();
}
